package wmh.day0109.utils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 使用单例模式（懒汉模式）
 * 加载配置资源管理器
 */
public class ConfigManager {
    //1.定义静态实例引用
    private static ConfigManager configManager;
    //1.2.定义一个静态Properties（解析处理资源先关文件信息）实例引用
    private static Properties properties;
    //2.私有构造
    private ConfigManager(){
        //初始加载处理 数据库资源配置文件\
        //定义database.properties配置文件路径
        String configPath = "db/database.properties";
        properties = new Properties();
        InputStream is = ConfigManager.class.getClassLoader().getResourceAsStream(configPath);
        try {
            properties.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (is != null) {
                try {
                    //释放输入流资源
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //3.对外提供调用该类静态实例
    public static ConfigManager getInstance(){
        //判断该静态实例是否为空
        if (configManager ==null){
            //加锁
            synchronized (ConfigManager.class){
                //双重校验判断
                if (configManager == null){
                    configManager = new ConfigManager();
                }
            }
        }
        return  configManager;
    }

        //4.对应提供一个获取properties资源配置文件的方法
        public static String getProperty(String key){
            return properties.getProperty(key);
        }
    }